其他
如何读取单细胞数据
分享是一种态度
1library(Seurat)
2library(tidyverse)
3library(Matrix)
4
5dataset_loc <- "expression_tables_cellrangerV3" #此处改为自己的文件夹路径
6ids <- c("UCD_Adj_VitE","UCD_Supp_VitE") #此处视自己的文件名来定
读取单个文件
方式一:Read10X
1## Read10X
2seurat_data <- Read10X(data.dir = paste(dataset_loc, ids[1],"filtered_feature_bc_matrix", sep="/"))
3seurat_obj <- CreateSeuratObject(counts = seurat_data)
4# write.table(seurat_obj@assays$RNA@counts, "all.datatable.txt",sep="\t", quote=F, col.names=NA)
方式二:Read10X_h5
注:如果自己没有h5格式的文件可以忽略此方法。
1## Read10X_h5
2seurat_data <- Read10X_h5(file.path(dataset_loc, ids[1], "filtered_feature_bc_matrix.h5"), use.names = T)
3seurat_obj <- CreateSeuratObject(counts = seurat_data)
方式三:read.table
注:同方法二,如果没有 “all.datatable.txt” 的文件,也可忽略此步骤。这里只是提供多种情况下的读入方法。(想尝试的话,方法一有生成 “all.datatable.txt” 的代码,不过要注意路径。)
1## read matrix
2matrix_data <- read.table(file.path(dataset_loc, ids[1], "all.datatable.txt"), sep="\t", header=T, row.names=1)
3# dim(matrix_data)
4# matrix_data[1:4,1:4]
5
6seurat_obj <- CreateSeuratObject(counts = matrix_data)
方式四:readMM
1# Read in `matrix.mtx`
2counts <- readMM(gzfile(file.path(dataset_loc,ids[1],"filtered_feature_bc_matrix","matrix.mtx.gz")))
3
4# Read in `genes.tsv`
5genes <- read_tsv(gzfile(file.path(dataset_loc,ids[1],"filtered_feature_bc_matrix","features.tsv.gz")), col_names = FALSE)
6gene_ids <- genes$X1
7
8# Read in `barcodes.tsv`
9cells <- read_tsv(gzfile(file.path(dataset_loc,ids[1],"filtered_feature_bc_matrix","barcodes.tsv.gz")), col_names = FALSE)
10cell_ids <- cells$X1
11
12# Create a sparse matrix for more efficient computation
13counts <- as(counts, "dgCMatrix")
14
15# Make the column names as the cell IDs and the row names as the gene IDs
16rownames(counts) <- gene_ids
17colnames(counts) <- cell_ids
18
19seurat_obj <- CreateSeuratObject(counts = counts)
读取多个文件
方式一:do.call
1d10x.data <- sapply(ids, function(i){
2 d10x <- Read10X(data.dir = file.path(dataset_loc,i,"filtered_feature_bc_matrix"))
3 colnames(d10x) <- paste(i,sapply(strsplit(colnames(d10x),split="_"),'[[',1L),sep="_")
4 d10x
5})
6
7seurat_merge <- do.call("cbind", d10x.data) # for "dgCMatrix"
8seurat_data <- CreateSeuratObject(seurat_merge, min.cells = 1, min.features = 1, names.field = 1, names.delim = "\\_")
9# table(Idents(seurat_data))
10# head(seurat_data@meta.data)
方式二:merge
1for (file in ids){
2 seurat_data <- Read10X(data.dir = paste(dataset_loc, file,"filtered_feature_bc_matrix", sep="/"))
3 seurat_obj <- CreateSeuratObject(counts = seurat_data, project = file)
4 assign(file, seurat_obj)
5}
6
7# Create a merged Seurat object
8merged_seurat <- merge(x = eval(parse(text=ids[1])), y = eval(parse(text=ids[2])), add.cell.id = ids)
9# table(Idents(merged_seurat))
10# head(merged_seurat@meta.data)
注:示例数据在https://share.weiyun.com/yqfUzaYK,可以自行下载尝试。
为什么同样的人类病人遗传隐私保护政策各个科学研究团队遵守情况不一样
10X单细胞转录组理论上有3个文件才能被读入R进行seurat分析
如果你对单细胞转录组研究感兴趣,但又不知道如何入门,也许你可以关注一下下面的课程
生信爆款入门-第6期(线上直播4周,马拉松式陪伴,带你入门) 你的生物信息入门课
数据挖掘学习班第4期(线上直播3周,马拉松式陪伴,带你入门) 医学生/医生首选技能提高课
生信技能树的2019年终总结 你的生物信息成长宝藏
看完记得顺手点个“在看”哦!
长按扫码可关注